package batch;

import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;

import java.nio.charset.Charset;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;

/**
 * batch包,批量消息 ,建议不超过4MB
 * 核心：producer.send(msgList)
 * @author itbac
 * @email 1218585258@qq.com
 * @date 2020/12/10
 */
public class Producer {
    public static void main(String[] args) throws Exception {
        //1.创建消息生产者 producer，并指定生产者组名 group1
        DefaultMQProducer producer = new DefaultMQProducer("group6");
        //2.指定Nameserver地址,集群用分号;隔开 。
        // （注意防火墙要开放指定端口,Nameserver端口9876 ,broker端口10911,broker要设置配置文件启动）
        producer.setNamesrvAddr("192.168.0.88:9876");
        //3.启动producer
        producer.start();

        //4.创建消息对象，指定主题Topic、Tag 和消息体
        /**
         *参数1：topic主题 （大分类）
         *参数2：tag （小分类）
         *参数3：body （消息内容）
         */
        //组装批量消息
        List<Message> msgList = new ArrayList<>();
        for (int i = 0; i < 100000; i++) {
            Message message1 = new Message("batch", "tag1",
                    ( "rocketmq 发送批量消息"+i).getBytes(Charset.forName("UTF-8")));
            msgList.add(message1);
        }

        //5.发送批量消息,拿到返回结果.
//        SendResult result = producer.send(msgList);
//        System.out.println(result);

        //list自动拆分再发送
        new ListSplitter(msgList,producer).send();

        //6.关闭生产者producer
        producer.shutdown();
    }
}
